package com.jctrip.hotel.source.model.CnBooking.resp;

import java.util.List;

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;

import lombok.Data;

/**
 * @Author henry
 * @Date 2023/7/2 21:51
 * @Description
 */
@Data
public class QueryRoomStatusResp extends BaseResponse {

    @JacksonXmlElementWrapper
    @JacksonXmlProperty(localName = "Data")
    private RoomStatusHotel data;


    @Data
    public static class RoomStatusHotel {
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Hotels")
        private Hotels Hotels;
    }

    @Data
    public static class Hotels {
        @JacksonXmlProperty(localName = "HotelCount")
        private String HotelCount;
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Hotel")
        private List<Hotel> Hotel;

    }

    @Data
    public static class Hotel {
        @JacksonXmlProperty(localName = "HotelId")
        private String HotelId;
        @JacksonXmlProperty(localName = "HotelName")
        private String HotelName;
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Rooms")
        private Rooms Rooms;

    }

    @Data
    public static class Rooms {
        @JacksonXmlProperty(localName = "RoomCount")
        private String RoomCount;
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Room")
        private List<Room> Room;

    }

    @Data
    public static class Room {
        @JacksonXmlProperty(localName = "RoomId")
        private String RoomId;
        @JacksonXmlProperty(localName = "RoomName")
        private String RoomName;
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "RatePlans")
        private RatePlans RatePlans;
        @JacksonXmlElementWrapper
        @JacksonXmlProperty(localName = "Rates")
        private Rates Rates;

    }

    @Data
    public static class Rates {
        @JacksonXmlProperty(localName = "RateCount")
        private String RateCount;
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "Rate")
        private List<Rate> Rate;

    }

    @Data
    public static class Rate {
        @JacksonXmlProperty(localName = "RatePlanId")
        private String RatePlanId;
        @JacksonXmlProperty(localName = "RatePlanName")
        private String RatePlanName;
        @JacksonXmlProperty(localName = "PriceAndStatus")
        @JacksonXmlElementWrapper(useWrapping = false)
        private PriceAndStatus PriceAndStatus;

    }

    @Data
    public static class PriceAndStatus {
        @JacksonXmlProperty(localName = "PriceAndStatuCount")
        private String PriceAndStatuCount;
        @JacksonXmlProperty(localName = "PriceAndStatu")
        @JacksonXmlElementWrapper(useWrapping = false)
        private List<PriceAndStatu> PriceAndStatu;

    }

    @Data
    public static class PriceAndStatu {
        @JacksonXmlProperty(localName = "RateId")
        private String RateId;
        @JacksonXmlProperty(localName = "Date")
        private String Date;
        @JacksonXmlProperty(localName = "Price")
        private String Price;
        @JacksonXmlProperty(localName = "Currency")
        private String Currency;
        @JacksonXmlProperty(localName = "Count")
        private String Count;
        @JacksonXmlProperty(localName = "Statu")
        private String Statu;
        @JacksonXmlProperty(localName = "LastCancelTime")
        private String LastCancelTime;

    }

    @Data
    public static class RatePlans {
        @JacksonXmlProperty(localName = "RatePlanCount")
        private String RatePlanCount;
        @JacksonXmlProperty(localName = "RatePlan")
        @JacksonXmlElementWrapper(useWrapping = false)
        private List<RatePlan> RatePlan;

    }

    @Data
    public static class RatePlan {
        @JacksonXmlProperty(localName = "RatePlanId")
        private String RatePlanId;
        @JacksonXmlProperty(localName = "RatePlanName")
        private String RatePlanName;
        @JacksonXmlProperty(localName = "Description")
        private String Description;
        @JacksonXmlProperty(localName = "CutOffDay")
        private String CutOffDay;
        @JacksonXmlProperty(localName = "CutOffTime")
        private String CutOffTime;
        @JacksonXmlProperty(localName = "Breakfast")
        private String Breakfast;
        @JacksonXmlProperty(localName = "BreakfastType")
        private String BreakfastType;
        @JacksonXmlProperty(localName = "MinRoomCount")
        private String MinRoomCount;
        @JacksonXmlProperty(localName = "PersonCount")
        private String PersonCount;
        @JacksonXmlProperty(localName = "MinDay")
        private String MinDay;
        @JacksonXmlProperty(localName = "BedLimit")
        private String BedLimit;
        @JacksonXmlProperty(localName = "Nationality")
        private String Nationality;
    }
}
